#include<bits/stdc++.h>
#define ll long long int
using namespace std;
int main(){
ll t;
cin>>t;
while(t--){
ll n;
cin>>n;
ll a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
string s;
cin>>s;
ll a1[n+1];
ll a0[n+1];
for(int i=0;i<=n;i++){
a1[i]=0;
a0[i]=0;
}
if(s[0]=='0') a0[1]=a[0];
if(s[0]=='1') a1[1]=a[0];
for(int i=2;i<=n;i++){
if(s[i-1]=='0'){
a0[i]=a0[i-1]^a[i-1];
a1[i]=a1[i-1];
}
else{
a0[i]=a0[i-1];
a1[i]=a1[i-1]^a[i-1];
}
}
ll q;
cin>>q;
ll f=a0[n];
ll ff=a1[n];
while(q--){
ll x;
cin>>x;
if(x==2){
ll y;
cin>>y;
if(y==0) cout<<f<<" ";
else cout<<ff<<" ";
}
else{
ll y ,z;
cin>>y>>z;
f=f^a0[y-1]^a0[z]^a1[y-1]^a1[z];
ff=ff^a1[y-1]^a1[z]^a0[y-1]^a0[z];
}
}
cout<<endl;
}
}
1169A - Circle Metro | 780C - Andryusha and Colored Balloons |
1153A - Serval and Bus | 1487C - Minimum Ties |
1136A - Nastya Is Reading a Book | 1353B - Two Arrays And Swaps |
1490E - Accidental Victory | 1335A - Candies and Two Sisters |
96B - Lucky Numbers (easy) | 1151B - Dima and a Bad XOR |
1435B - A New Technique | 1633A - Div 7 |
268A - Games | 1062B - Math |
1294C - Product of Three Numbers | 749A - Bachgold Problem |
1486B - Eastern Exhibition | 1363A - Odd Selection |
131B - Opposites Attract | 490C - Hacking Cypher |
158B - Taxi | 41C - Email address |
1373D - Maximum Sum on Even Positions | 1574C - Slay the Dragon |
621A - Wet Shark and Odd and Even | 1395A - Boboniu Likes to Color Balls |
1637C - Andrew and Stones | 1334B - Middle Class |
260C - Balls and Boxes | 1554A - Cherry |